PostgreSQL 高可用 Repmgr环境准备
1 安装 postgresql 数据库
2 操作系统依赖包
2.1 配置软件仓库
vi /etc/yum.repos.d/almalinux-crb.repo
enabled=1
2.2 安装依赖包
dnf install curl-devel json-c-devel -y
3 配置DNS 解析
cat >> /etc/hosts << EOF
192.168.10.228 vip
192.168.10.229 node1
192.168.10.230 node2
192.168.10.231 node3
192.168.10.232 node4
EOF
4 配置 Linux SSH 配置节点互信
5 配置 ip 和 arping 命令的 setuid
chmod u+s /sbin/ip
chmod u+s /usr/sbin/arping
ls -ltra /sbin/ip
ls -ltra /usr/sbin/arping
6 PostgreSQL 数据库环境准备
6.1 node1
1、配置数据库参数
ALTER SYSTEM set wal_log_hints=on;
2、配置 pg_hba.conf
vi $PGDATA/pg_hba.conf
host replication repmgr 127.0.0.1/32 scram-sha-256
host replication repmgr 192.168.10.0/24 scram-sha-256
host all repmgr 192.168.10.0/24 scram-sha-256
host all repmgr 127.0.0.1/32 scram-sha-256
3、创建 repmgr 数据库和 repmgr 用户
CREATE USER repmgr PASSWORD 'repmgr' superuser;
CREATE DATABASE repmgr OWNER repmgr;
ALTER USER repmgr SET search_path TO repmgr, "$user", public;
4、重启数据库
pg_ctl restart
5、创建必要目录
mkdir -p /usr/local/pgsql/run
mkdir -p /usr/local/pgsql/log
6.2 node2
1、删除数据库集簇目录,用于 clone 主库库。
su - postgres
pg_ctl stop
rm -rf $PGDATA/*
ll $PGDATA/
2、创建必要目录
mkdir -p /usr/local/pgsql/run
mkdir -p /usr/local/pgsql/log
6.3 node3
1、删除数据库集簇目录,用于 clone 主库库。
su - postgres
pg_ctl stop
rm -rf $PGDATA/*
ll $PGDATA/
2、创建必要目录
mkdir -p /usr/local/pgsql/run
mkdir -p /usr/local/pgsql/log
6.4 node4
Warning
repmgrd 组件不允许witness 节点数据库和 master 数据库有相同 database system identifiers
。
所以需要将node4 上的数据库删除重建。否则就会报以下错误:
INFO: connecting to witness node "node4" (ID: 4)
INFO: connecting to primary node
ERROR: witness node cannot be in the same cluster as the primary node
DETAIL: database system identifiers on primary node and provided witness node match (7276711414967480263)
HINT: the witness node must be created on a separate read/write node
1、删除原有数据库集簇。
su - postgres
pg_ctl stop
rm -rf $PGDATA/*
ll $PGDATA/
2、重新创建数据库集簇。
initdb -D $PGDATA -W --data-checksums -A scram-sha-256 -E UTF-8
3、 PostgreSQL 客户端认证配置
4、 PostgreSQL 错误日志配置
3、配置数据库参数
ALTER SYSTEM set wal_log_hints=on;
4、配置 pg_hba.conf
vi $PGDATA/pg_hba.conf
host replication repmgr 127.0.0.1/32 scram-sha-256
host replication repmgr 192.168.10.0/24 scram-sha-256
host all repmgr 192.168.10.0/24 scram-sha-256
host all repmgr 127.0.0.1/32 scram-sha-256
5、创建 repmgr 数据库和repmgr 用户
CREATE USER repmgr PASSWORD 'repmgr' SUPERUSER;
CREATE DATABASE repmgr OWNER repmgr;
ALTER USER repmgr SET search_path TO repmgr, "$user", public;
4、重启数据库
pg_ctl restart
5、创建必要目录
mkdir -p /usr/local/pgsql/run
mkdir -p /usr/local/pgsql/log
7 配置 PostgreSQL 密码文件
Warning
如果不想配置密码文件,请在 PostgreSQL 高可用 Repmgr环境准备#5 PostgreSQL 数据库环境准备的pg_hba.conf 配置 trust
认证方式,否则会报错。
su - postgres
vi ~/.pgpass
*:5432:*:repl:repl
*:5432:*:postgres:postgres
*:5432:*:repmgr:repmgr
chmod 600 ~/.pgpass
scp ~/.pgpass node1:~
scp ~/.pgpass node2:~
scp ~/.pgpass node3:~
scp ~/.pgpass node4:~